Suponiendo que todos los elementos dentro de una matriz tienen un valor diferente de undefined , null o 0 , es
if (idx < arr.length) equivalente a if (arr[idx]) ?
No.
Hay otros valores falsos que se evaluarán como false en la instrucción if , como una cadena vacía ( '' ):
const arrWithEmptyString = ['', '', '']; const idx = 2; console.log(!!(idx < arrWithEmptyString.length)); console.log(!!arrWithEmptyString[idx]); Alternativamente, ¿qué sucede si la matriz contiene un valor booleano false ?
const boolArray = [true, false, true, false] const idx = 3; console.log(!!(idx < boolArray.length)); console.log(!!boolArray[idx]);La conversión de tipo /coerción de tipo en JS puede ser confusa e impredecible; en mi opinión, generalmente es mejor ser explícito y probar exactamente lo que quiere probar, en lugar de confiar en comparaciones de tipos débiles para guardar algunos caracteres.
Buena respuesta de Alexander Nied, también NaN se evalúa como falso
const boolArray = [NaN, NaN, NaN, NaN] const idx = 3; console.log(!!(idx < boolArray.length)); console.log(!!boolArray[idx]);